Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rabbit_feature_flags: Enable required feature flags during sync #12466

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

dumbbell
Copy link
Member

@dumbbell dumbbell commented Oct 7, 2024

Why

Before this patch, required feature flags were basically checked during boot: they must have been enabled when they were mere stable feature flags. If they were not, the node refused to boot.

This was easy for the developer because making a feature flag required allowed to remove the entire compatibility code. Very satisfying.

Unfortunately, this was a pain point to end users, especially those who did not pay attention to RabbitMQ and the release notes and were just asking their package manager to update everything. They could end up with a node that refuse to boot. The only solution was to downgrade, enable the disabled stabte feature flags, upgrade again.

How

This patch removes the check and handle required feature flags like any other stable feature flags, except that they are forcibly enabled during boot.

This is done when the cluster feature flags states are verified and synchronized. If a required feature flag is not enabled yet, it is enabled at that time.

This means that as developers, we will have to keep compatibility code forever, like the required feature flag definition itself.

@dumbbell dumbbell self-assigned this Oct 7, 2024
@dumbbell dumbbell force-pushed the enable-required-feature-flags-during-sync branch 3 times, most recently from 558e99e to 2acffca Compare October 15, 2024 15:11
@dumbbell dumbbell force-pushed the enable-required-feature-flags-during-sync branch 3 times, most recently from 3a84dc7 to 92379b4 Compare October 16, 2024 10:58
[Why]
Before this patch, required feature flags were basically checked during
boot: they must have been enabled when they were mere stable feature
flags. If they were not, the node refused to boot.

This was easy for the developer because making a feature flag required
allowed to remove the entire compatibility code. Very satisfying.

Unfortunately, this was a pain point to end users, especially those who
did not pay attention to RabbitMQ and the release notes and were just
asking their package manager to update everything. They could end up
with a node that refuse to boot. The only solution was to downgrade,
enable the disabled stabte feature flags, upgrade again.

[How]
This patch removes the check and handle required feature flags like any
other stable feature flags, except that they are forcibly enabled during
boot.

This is done when the cluster feature flags states are verified and
synchronized. If a required feature flag is not enabled yet, it is
enabled at that time.

This means that as developers, we will have to keep compatibility code
forever, like the required feature flag definition itself.
@dumbbell dumbbell force-pushed the enable-required-feature-flags-during-sync branch from 92379b4 to cd88a14 Compare October 16, 2024 16:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Development

Successfully merging this pull request may close these issues.

1 participant